<?php


class Usuario {
	
	//DADOS COMUNS
	private $idUsuario;
	private $email;
	private $tipoCadastro;
	private $dataCadastro;
	private $ultimoAcesso;
	private $nome;
	private $foto;
	private $dataNascimento;
	private $sexo;
	private $cidade;
	private $estado;
	private $instituicao;
	private $termoCompromisso;
	private $apagado;
	private $forumPreferenciaVisualizacao;
	
	private	$cursos	=	array();
	
	//DADOS ALUNOS
	private	$alunoNivel;
	private	$alunoCurso;
	private	$alunoPeriodo;
	
	//DADOS PROFESSORES
	private	$professorAutorizado;
	private	$professorInstituto;
	private	$professorDepartamento;
	private	$professorTitulacao;
	private	$professorEnderecoInstitucional;
	private	$professorTelefoneInstitucional;
	private	$professorCursosPretendidos;
	private $professorCapacidadeBancoRecursos;
	
	
	/**
	 * @constructor
	 * @classDescription Classe modelo que representa um usuario do Sistema
	 * @param int[optional]    		$idUsuario
	 */
	public function Usuario($idUsuario){
		
		$strQuery = "SELECT * FROM usuarios WHERE idUsuario=". $idUsuario .";";
		
		if(is_array($resultado = BancoDados::query($strQuery))){
			
			$this->setIdUsuario($resultado[0]['idUsuario']);
			$this->setEmail($resultado[0]['email']);
			$this->setTipoCadastro($resultado[0]['tipoCadastro']);
			$this->setDataCadastro($resultado[0]['dataCadastro']);
			$this->setUltimoAcesso($resultado[0]['ultimoAcesso']);
			$this->setNome($resultado[0]['nome']);
			$this->setFoto($resultado[0]['foto']);
			$this->setDataNascimento($resultado[0]['dataNascimento']);
			$this->setSexo($resultado[0]['sexo']);
			$this->setCidade($resultado[0]['cidade']);
			$this->setEstado($resultado[0]['estado']);
			$this->setInstituicao($resultado[0]['instituicao']);
			$this->setTermoCompromisso($resultado[0]['termoCompromissoAssinado']);
			$this->setApagado($resultado[0]['apagado']);
			$this->setForumPreferenciaVisualizacao($resultado[0]['forumPreferenciaVisualizacao']);
			
			if($this->getTipoCadastro() == 'Aluno'){
				
				$strQuery = "SELECT * FROM dadosAlunos WHERE idUsuario= ".$idUsuario;	
				
				if(is_array($resultado = BancoDados::query($strQuery))){
					
					$this->setAlunoNivel($resultado[0]['nivel']);
					$this->setAlunoCurso($resultado[0]['curso']);
					$this->setAlunoPeriodo($resultado[0]['periodo']);
				}
				else {			
					$this->setIdUsuario(null);
				}			
				
			}
			else {
				
				$strQuery = "SELECT * FROM dadosProfessores WHERE idUsuario=".$idUsuario.";";	
				
				if(is_array($resultado = BancoDados::query($strQuery))){
					
					$this->setProfessorAutorizado($resultado[0]['autorizado']);
					$this->setProfessorInstituto($resultado[0]['instituto']);
					$this->setProfessorDepartamento($resultado[0]['departamento']);
					$this->setProfessorTitulacao($resultado[0]['titulacao']);
					$this->setProfessorEnderecoInstitucional($resultado[0]['enderecoInstitucional']);
					$this->setProfessorTelefoneInstitucional($resultado[0]['telefoneInstitucional']);
					$this->setProfessorCursosPretendidos($resultado[0]['cursosPretendidos']);
					$this->setProfessorCapacidadeBancoRecursos($resultado[0]['capacidadeBancoDeRecursos']);		
				}
				else {
					$this->setIdUsuario(null);
				}				
			}
		}
		else{
			$this->setIdUsuario(null);	
		}
	}
	
    public function getCursos($participacao = 'Qualquer') {
    	$cursos	=	array();
    	
    	if ($participacao == 'Aluno' || $participacao == 'Tutor' || $participacao == 'Qualquer') {
    	 	
    		$strQuery = "SELECT cursos.nome, cursos.idCurso, cursosAlunos.funcaoUsuario, cursosAlunos.autorizado FROM cursosAlunos INNER JOIN cursos ON cursosAlunos.idCurso = cursos.idCurso WHERE cursosAlunos.idUsuario = " . $this->getIdUsuario() . " AND funcaoUsuario = 'Aluno'";
		
			if(is_array($resultado = BancoDados::query($strQuery))){
				foreach ($resultado as $cursosAluno) {
					$dadosCurso	=	array('participacao' => $cursosAluno['funcaoUsuario'], 'autorizado' => $cursosAluno['autorizado'], 'nome' => $cursosAluno['nome']);
					$cursos[$cursosAluno['idCurso']]	=	$dadosCurso;
				}
				
				if ($participacao == 'Qualquer') {
					
					if ($this->getTipoCadastro() == "Professor" || $this->getTipoCadastro() == "Administrador") {
						$strQuery	=	"SELECT turmas.idCurso FROM turmas ";
						$strQuery	.=	"INNER JOIN turmasProfessores ON turmas.idTurma = turmasProfessores.idTurma ";
						$strQuery	.=	"WHERE turmasProfessores.idUsuario = " . $this->getIdUsuario() ;
							
						if(is_array($resultado = BancoDados::query($strQuery))){
							foreach($resultado as $cursosProfessor){
								$dadosCurso	=	array('participacao' => 'Professor', 'autorizado' => true);
								$cursos[$cursosProfessor['idCurso']]	=	$dadosCurso;
							}
						}
						else {
							return false;
						}
					}
					return $cursos;
				}
				else {
					return $cursos;
				}
    		}
    		else {
				return false;
			}
		}
		else {
			if ($this->getTipoCadastro() == "Professor" || $this->getTipoCadastro() == "Administrador") {
				$strQuery	=	"SELECT turmas.idCurso FROM turmas ";
				$strQuery	.=	"INNER JOIN turmasProfessores ON turmas.idTurma = turmasProfessores.idTurma ";
				$strQuery	.=	"WHERE turmasProfessores.idUsuario = " . $this->getIdUsuario() ;
					
				if(is_array($resultado = BancoDados::query($strQuery))){
					foreach($resultado as $cursosProfessor){
						$dadosCurso	=	array('participacao' => 'Professor', 'autorizado' => true);
						$cursos[$cursosProfessor['idCurso']]	=	$dadosCurso;
					}
				}
				else {
					return false;
				}
				return $cursos;
			}
			else {
				return false;
			}
		}
    }
	
	/**
	 * 
	 * @param object $idUsuario
	 * @return 
	 */
	public static function apagar ($idUsuario) {
		$strQuery	=	"UPDATE usuarios SET apagado = TRUE WHERE idUsuario = " . $idUsuario . ";";
		return BancoDados::query($strQuery);
	}
	
	/**
	 * 
	 * @param object $idUsuario
	 * @return 
	 */
	public static function reativar ($idUsuario) {
		$strQuery	=	"UPDATE usuarios SET apagado = FALSE WHERE idUsuario = " . $idUsuario . ";";
		return BancoDados::query($strQuery);
	}
	
	/**
	 * 
	 * @param object $idUsuario
	 * @return 
	 */
	public static function autorizarProfessor ($idUsuario) {
		$strQuery	=	"UPDATE dadosProfessores SET autorizado = TRUE WHERE idUsuario = " . $idUsuario . ";";
		return BancoDados::query($strQuery);
	}
	
	/**
	 * 
	 * @param object $strNome
	 * @param object $comFoto
	 * @param object $strDataNascimentoInicio
	 * @param object $strDataNascimentoFim
	 * @param object $strSexo
	 * @param object $strCidade
	 * @param object $strEstado
	 * @param object $strFinalidadeUso
	 * @param object $strInstituicao
	 * @param object $strNivel
	 * @param object $strCurso
	 * @param object $strPeriodo
	 * @param object $strInstituto
	 * @param object $strDepartamento
	 * @param object $strTitulacao
	 * @param object $strEnderecoInstitucional
	 * @param object $strTelefoneInstitucional
	 * @param object $strCursosPretendidos
	 * @param object $novoProfessor
	 * @param object $strEmail
	 * @param object $strDataCadastroInicio
	 * @param object $strDataCadastroFim
	 * @param object $strUltimoAcessoInicio
	 * @param object $strUltimoAcessoFim
	 * @param object $aceitouTermo
	 * @param object $apagado
	 * @param object $paginaAtual [optional]
	 * @param object $usuariosPagina [optional]
	 * @param object $ordenacaoAtual [optional]
	 * @param object $ordemAtual [optional]
	 * @return 
	 */
	public static function buscar ($idUsuarios, $strNome, $comFoto, $strDataNascimentoInicio, $strDataNascimentoFim, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $novoProfessor, $strEmail, $strDataCadastroInicio, $strDataCadastroFim, $strUltimoAcessoInicio, $strUltimoAcessoFim, $aceitouTermo, $apagado, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		if (Usuario::validaBusca($idUsuarios, $strNome, $comFoto, $strDataNascimentoInicio, $strDataNascimentoFim, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $novoProfessor, $strEmail, $strDataCadastroInicio, $strDataCadastroFim, $strUltimoAcessoInicio, $strUltimoAcessoFim, $aceitouTermo, $apagado)) {
			//PREPARANDO QUERY INICIAL
			$strQuery	=	"SELECT usuarios.idUsuario, usuarios.foto, usuarios.nome, usuarios.email, usuarios.tipoCadastro, usuarios.instituicao, usuarios.ultimoAcesso, usuarios.dataCadastro, usuarios.apagado FROM usuarios ";
			//VERIFICANDO SE PRECISA FAZER JOIN COM OUTRAS TABELAS
			if ($strFinalidadeUso != null) {
				if ($strFinalidadeUso == 'Aluno') {
					$strQuery	.=	"INNER JOIN dadosAlunos ON usuarios.idUsuario = dadosAlunos.idUsuario ";
				}
				else {
					$strQuery	.=	"INNER JOIN dadosProfessores ON usuarios.idUsuario = dadosProfessores.idUsuario ";
				}
			}
			
			$strQuery	.=	"WHERE ";
			
			//ADICIONANDO INTERVALOS DE DATAS (SE HOUVEREM) NA QUERY
			$strQuery	.=	$strDataNascimentoInicio != null	?	'usuarios.dataNascimento >= "' . $strDataNascimentoInicio . ' 0:0:0" AND ' : '';
			$strQuery	.=	$strDataNascimentoFim != null		?	'usuarios.dataNascimento <= "' . $strDataNascimentoFim . ' 23:59:59" AND ' : '';
			$strQuery	.=	$strDataCadastroInicio != null		?	'usuarios.dataCadastro >= "' . $strDataCadastroInicio . '" AND ' : '';
			$strQuery	.=	$strDataCadastroFim != null			?	'usuarios.dataCadastro <= "' . $strDataCadastroFim . '" AND ' : '';
			$strQuery	.=	$strUltimoAcessoInicio != null		?	'usuarios.ultimoAcesso >= "' . $strUltimoAcessoInicio . '" AND ' : '';
			$strQuery	.=	$strUltimoAcessoFim != null			?	'usuarios.ultimoAcesso <= "' . $strUltimoAcessoFim . '" AND ' : '';
			
			//ADICIONANDO BOOLEANOS (SE HOUVEREM) NA QUERY
			if ($comFoto == 'sim')
				$strQuery .= 'usuarios.foto != "" AND ';
			else
				if ($comFoto == 'nao')
					$strQuery .= 'usuarios.foto IS NULL AND ';
			
			if ($aceitouTermo == 'sim')
				$strQuery .= 'usuarios.termoCompromissoAssinado = TRUE AND ';
			else
				if ($aceitouTermo == 'nao')
					$strQuery .= 'usuarios.termoCompromissoAssinado = FALSE AND ';
			
			if ($apagado == 'sim')
				$strQuery .= 'usuarios.apagado = TRUE AND ';
			else
				if ($apagado == 'nao')
					$strQuery .= 'usuarios.apagado = FALSE AND ';
			
			//ADICIONANDO VALORES FIXOS (SE HOUVEREM) NA QUERY
			$idUsuario	=	"";
			if (is_array($idUsuarios)) {
				foreach ($idUsuarios as $id) {
					$idUsuario	.=	$id . ", ";
				}
				$idUsuario	=	preg_replace('/, $/', '', $idUsuario);
			}
			else
				$idUsuario	=	$idUsuarios;
			
			$strQuery	.=	$idUsuario != null							?	'usuarios.idUsuario IN (' . $idUsuario . ') AND ' : '';
			$strQuery	.=	$strSexo != null							?	'usuarios.sexo = "' . $strSexo . '" AND ' : '';
			$strQuery	.=	$strEstado != null && $strEstado != '--'	?	'usuarios.estado = "' . $strEstado . '" AND ' : '';
			$strQuery	.=	$strFinalidadeUso != null					?	($strFinalidadeUso == 'Novo Professor' ? 'usuarios.tipoCadastro = "Professor" AND dadosProfessores.autorizado = FALSE AND ' : 'usuarios.tipoCadastro = "' . $strFinalidadeUso . '" AND ') : '';
	
			//ADICIONANDO EXPRESSOES REGULARES (SE HOUVEREM) NA QUERY
			$strQuery		.=	$strNome != null ? configuraRegexpStringBusca(codificaStringBusca($strNome), 'usuarios.nome') : '';
			$strQuery		.=	$strCidade != null ? configuraRegexpStringBusca(codificaStringBusca($strCidade), 'usuarios.cidade') : '';
			$strQuery		.=	$strEmail != null ? configuraRegexpStringBusca($strEmail, 'usuarios.email') : '';
			$strQuery		.=	$strInstituicao != null ? configuraRegexpStringBusca(codificaStringBusca($strInstituicao), 'usuarios.instituicao') : '';
			
			//PEGANDO DADOS ESPECIFICOS DE CADA TIPO DE USUARIO
			if ($strFinalidadeUso != null) {
				if ($strFinalidadeUso == 'Aluno') {
					$strQuery	.=	$strNivel != null && $strNivel != '--'		?	'dadosAlunos.nivel = "' . $strNivel . '" AND ' : '';
					$strQuery	.=	$strPeriodo != null && $strPeriodo != '--'	?	'dadosAlunos.periodo = "' . $strPeriodo . '" AND ' : '';
					
					$strQuery		.=	$strCurso != null ? configuraRegexpStringBusca(codificaStringBusca($strCurso), 'dadosAlunos.curso') : '';
				}
				else {
					if ($novoProfessor == 'sim') {
						if ($strFinalidadeUso == 'Professor')
							$strQuery .= 'dadosProfessores.autorizado = FALSE AND ';
					}
					else {
						if ($novoProfessor == 'nao')
							if ($strFinalidadeUso == 'Professor')
								$strQuery .= 'dadosProfessores.autorizado = TRUE AND ';
					}
								
					$strQuery	.=	$strTitulacao != null && $strTitulacao != '--'	?	'dadosProfessores.titulacao = "' . $strTitulacao . '" AND ' : '';
					$strQuery	.=	$strTelefoneInstitucional != null				?	'dadosProfessores.telefoneInstitucional = "' . $strTelefoneInstitucional . '" AND ' : '';
					
					$strQuery		.=	$strInstituto != null ? configuraRegexpStringBusca(codificaStringBusca($strInstituto), 'dadosProfessores.instituto') : '';
					$strQuery		.=	$strDepartamento != null ? configuraRegexpStringBusca(codificaStringBusca($strDepartamento), 'dadosProfessores.departamento') : '';
					$strQuery		.=	$strEnderecoInstitucional != null ? configuraRegexpStringBusca(codificaStringBusca($strEnderecoInstitucional), 'dadosProfessores.enderecoInstitucional') : '';
					$strQuery		.=	$strCursosPretendidos != null ? configuraRegexpStringBusca(codificaStringBusca($strCursosPretendidos), 'dadosProfessores.cursosPretendidos') : '';
				}
			}
			
			//CONSERTANDO FINAL DA QUERY
			$strQuery	=	preg_replace('/ WHERE $/', ' ', $strQuery);
			$strQuery	=	preg_replace('/ AND $/', ' ', $strQuery);
			
			$strQueryCount	=	"SELECT COUNT(*) AS qtdResultados FROM (" . $strQuery . ") AS queryOriginal;";
			
			$resultadoCount	=	BancoDados::query($strQueryCount);
			if (is_array($resultadoCount)) {
				foreach ($resultadoCount as $resultado) {
					$qtdResultados	=	$resultado['qtdResultados'];
				}
				
				if ($qtdResultados > 0) {
					$paginaAtual	=	$paginaAtual == NULL ? 1 : $paginaAtual;
					$ordenacaoAtual	=	$ordenacaoAtual == NULL ? 'nome' : $ordenacaoAtual;
					$ordemAtual		=	$ordemAtual == NULL ? 'ASC' : ($ordemAtual == 'desc' ? 'DESC' : 'ASC');
					
					$strQuery	.=	' ORDER BY ' . $ordenacaoAtual . ' ' . $ordemAtual;
					
					if ($resultadosPagina != NULL) {
						$qtdPaginas		=	ceil($qtdResultados / $resultadosPagina);
						$qtdPaginas		=	$qtdPaginas == 0 ? 1 : $qtdPaginas;
						
						$strQuery		.=	' LIMIT ' . $resultadosPagina . ' OFFSET ' . (($paginaAtual - 1) * $resultadosPagina);
					}
					else {
						$qtdPaginas	=	1;
					}
					
					$strQuery	.=	';';
					$resultado	=	BancoDados::query($strQuery);
					
					if (is_array($resultado)) {
						return array ('listaResultados' => $resultado, 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => $qtdPaginas);
					}
					else {
						return false;
					}
				}
				else {
					return array ('listaResultados' => array(), 'qtdResultadosTotal' => $qtdResultados, 'qtdPaginas' => 0);
				}
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public static function buscarNome($strNome, $apagado = NULL, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		return Usuario::buscar(null, $strNome, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $apagado, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public static function buscarTipo($strTipo, $apagado = NULL, $paginaAtual = NULL, $resultadosPagina = NULL, $ordenacaoAtual = NULL, $ordemAtual = NULL) {
		$professorAutorizado	=	null;
		switch (strtolower($strTipo)) {
			case 'aluno':
			case 'alunos':
				$strTipo	=	'Aluno';
				break;
				
			case 'professor':
			case 'professores':
				$strTipo	=	'Professor';
				break;
				
			case 'novo professor':
			case 'novos professores':
				$strTipo				=	'Professor';
				$professorAutorizado	=	true;
				break;
				
			case 'administrador':
			case 'administradores':
				$strTipo				=	'Administrador';
				$professorAutorizado	=	true;
				break;
			
			default:
				$strTipo	=	null;
				break;
		}
		return Usuario::buscar(null, null, null, null, null, null, null, null, $strTipo, null, null, null, null, null, null, null, null, null, null, $professorAutorizado, null, null, null, null, null, null, $apagado, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	public static function validaBusca($idUsuarios, $strNome, $comFoto, $strDataNascimentoInicio, $strDataNascimentoFim, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $novoProfessor, $strEmail, $strDataCadastroInicio, $strDataCadastroFim, $strUltimoAcessoInicio, $strUltimoAcessoFim, $aceitouTermo, $apagado) {
		$validou	=	true;
		
		/*
		 * Validacao da data de nascimento inserida pelo usuario.
		 */
		
		if (!validaDataString($strDataNascimentoInicio) && str_replace('-', '', $strDataNascimentoInicio) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_NASCIMENTO_INICIO'))), 'erro');	
		}
		
		if (!validaDataString($strDataNascimentoFim) && str_replace('-', '', $strDataNascimentoFim) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_NASCIMENTO_FIM'))), 'erro');	
		}
			
		if ($strFinalidadeUso == 'Professor') {
			
			/*
			 * Validacao do Telefone Institucional inserido pelo usuario.
			 */
			
			if (!validaNumero($strTelefoneInstitucional, constant('__TAM_TELEFONE_INSTITUCIONAL_USUARIO__')) && $strTelefoneInstitucional	!=	''){
				$validou	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_TELEFONE_INSTITUCIONAL'))), 'erro');	
			}
		}
		
		/*
		 * Validacao da data de cadastro inserida pelo usuario.
		 */
		
		if (!validaDataString($strDataCadastroInicio) && str_replace('-', '', $strDataCadastroInicio) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_CADASTRO_INICIO'))), 'erro');	
		}
		
		if (!validaDataString($strDataCadastroFim) && str_replace('-', '', $strDataCadastroFim) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_CADASTRO_FIM'))), 'erro');	
		}
		
		/*
		 * Validacao da data de cadastro inserida pelo usuario.
		 */
		
		if (!validaDataString($strUltimoAcessoInicio) && str_replace('-', '', $strUltimoAcessoInicio) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_ULTIMO_ACESSO_INICIO'))), 'erro');	
		}
		
		if (!validaDataString($strUltimoAcessoFim) && str_replace('-', '', $strUltimoAcessoFim) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_ULTIMO_ACESSO_FIM'))), 'erro');	
		}
		
		return $validou;
	}
	
	public static function getUsuarioPorId($idUsuarios, $paginaAtual = null, $resultadosPagina = null, $ordenacaoAtual = null, $ordemAtual = null) {
		return Usuario::buscar($idUsuarios, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, $paginaAtual, $resultadosPagina, $ordenacaoAtual, $ordemAtual);
	}
	
	/**
	 * Retorna a função do usuário em um determinado curso
	 * @return string
	 * @param int $idUsuario, string $tipoCadastro, int $idCurso
	 */
	public function getFuncaoUsuarioCurso($idUsuario, $tipoCadastro, $idCurso){
		
		$strQuery0 = "SELECT idDono FROM cursos WHERE idDono=$idUsuario AND idCurso= $idCurso ";
		if($resultado = BancoDados::query($strQuery0)) {
			return 'Dono';
		}
		$strQuery = "SELECT funcaoUsuario FROM cursosAlunos WHERE idUsuario=". $idUsuario ." AND idCurso=". $idCurso .";";
		if($resultado = BancoDados::query($strQuery)) {
			return $resultado[0]['funcaoUsuario'];
		}
		else {
			if ($tipoCadastro == 'Aluno') {
				return null;
			}
			else {
				$strQuery = "SELECT turmas.nome FROM turmas INNER JOIN turmasProfessores ON turmas.idTurma = turmasProfessores.idTurma 
							 WHERE turmas.idCurso=" . $idCurso . " AND turmasProfessores.idUsuario=" . $idUsuario . ";";
				if ($resultado = BancoDados::query($strQuery)) {
					return 'Professor';
				}
				else {
					return null;
				}
			}
		}
	}
	
	/**
	 * Verifica se o Email e a Senha inseridas sao validos e constam na base de dados.
	 * @return bool
	 * @param string $strEmail
	 * @param string $strSenha
	 */
		
	public static function logar($strEmail, $strSenha){
		if (validaEmail($strEmail) && validaSenha($strSenha)){
			$strQuery	=	'SELECT idUsuario FROM usuarios WHERE email = "' . $strEmail . '" AND senha = MD5("' . $strSenha . '") AND apagado = 0;';
			
			$resultado 	=	BancoDados::query($strQuery);
			
			if(is_array($resultado) && sizeof($resultado) > 0) {
				$idUsuario 	=	$resultado[0]['idUsuario'];
				
				$usuario	=	new Usuario($idUsuario);
				
				if($usuario->getIdUsuario()	==	null){
					adicionaMensagem(texto('BANCO_DADOS_ERRO_CONEXAO'),"erro");
					return false;
				}
				
				$strQuery	=	'UPDATE usuarios SET ultimoAcesso = NOW() WHERE idUsuario=' . $idUsuario . ';';
				if (!BancoDados::query($strQuery)) {
					adicionaMensagem(texto('BANCO_DADOS_ERRO_CONEXAO'),"erro");
					return false;
				}
				
				//Mensagem de Boas Vindas a Constructore			
				$saudacao = escreveSaudacao($usuario);
				adicionaMensagem(texto('MENSAGEM_SAUDACAO', $saudacao));
			
				$_SESSION['constructore']['usuario']	=	serialize($usuario);							
				
				return	true;
			}
			else {
				adicionaMensagem(texto('MENSAGEM_ERRO_LOGIN'), 'erro');
				return false;
			}
		}
		else{
			adicionaMensagem(texto('MENSAGEM_ERRO_LOGIN'), 'erro');
			return false;	
		}
	}
	
	public static function cadastrar($strNome, $fileFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo) {
		if (Usuario::validar($strNome, $fileFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo)) {
			$strConcordarTermo	=	$strConcordarTermo == 'sim' ? 1 : 0;
			$strDataNascimento	=	$strDataNascimento == '' ? 'NULL' : "'" . $strDataNascimento . "'";
			
			$strQuery 	=	"INSERT INTO usuarios VALUES(default, '" . $strEmail . "', MD5('" . $strSenha . "'), '" . $strFinalidadeUso . "', NOW(), NOW(), '" . $strNome . "', NULL, " . $strDataNascimento . ", '" . $strSexo . "', '" . $strCidade . "', '" . $strEstado . "', '" . $strInstituicao . "', " . $strConcordarTermo . ", default, default);";
			if (BancoDados::query($strQuery)) {
				$strQuery 	=	"SELECT idUsuario FROM usuarios WHERE email = '" . $strEmail . "';";
				
				if (is_array($resultado = BancoDados::query($strQuery))) {
					
					$idUsuario 	=	$resultado[0]['idUsuario'];
					
					if ($strFinalidadeUso == 'Aluno') {
						$strQuery 	=	"INSERT INTO dadosAlunos VALUES(" . $idUsuario . ", '" . $strNivel . "', '" . $strCurso . "', '" . $strPeriodo . "');";
					}
					else {
						$strEnderecoInstitucional	=	$strEnderecoInstitucional == '' ? 'NULL' : "'" . $strEnderecoInstitucional . "'";
						$strTelefoneInstitucional	=	$strTelefoneInstitucional == '' ? 'NULL' : "'" . $strTelefoneInstitucional . "'";
						$strQuery 	=	"INSERT INTO dadosProfessores VALUES(" . $idUsuario . ", default, '" . $strInstituto . "', '" . $strDepartamento . "', '" . $strTitulacao . "', " . $strEnderecoInstitucional . ", " . $strTelefoneInstitucional . ", '" . $strCursosPretendidos . "', default);";
					}
					
					if (BancoDados::query($strQuery)) {
						if ($fileFoto['name'] != '') {
							$arquivoFoto		=	'usuario' . $idUsuario . '_original.' . array_pop(explode('.', $fileFoto['name']));
							$arquivoFotoGrande	=	'usuario' . $idUsuario . '_medio.' . array_pop(explode('.', $fileFoto['name']));
							$arquivoFotoPequena	=	'usuario' . $idUsuario . '_pequeno.' . array_pop(explode('.', $fileFoto['name']));
							if (move_uploaded_file($fileFoto['tmp_name'], constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto)) {
								redimensionaImagem(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto, constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoGrande, constant('__LARGURA_GRANDE_FOTO_USUARIO__'), constant('__ALTURA_GRANDE_FOTO_USUARIO__'), 100);
								redimensionaImagem(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto, constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoPequena, constant('__LARGURA_PEQUENA_FOTO_USUARIO__'), constant('__ALTURA_PEQUENA_FOTO_USUARIO__'), 100);
								$strQuery 	=	"UPDATE usuarios SET foto = '" . $arquivoFoto . "' WHERE idUsuario = " . $idUsuario . ";";
								
								if (!BancoDados::query($strQuery)) {
									unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto);
									unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoGrande);
									unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoPequena);
									
									adicionaMensagem(texto('MENSAGEM_CADASTRO_SALVAR_FOTO_USUARIO'));
								}
							}
							else {
								adicionaMensagem(texto('MENSAGEM_CADASTRO_SALVAR_FOTO_USUARIO'));
							}
						}
						if ($strFinalidadeUso == 'Aluno')
							email($strEmail, textoEmail('EMAIL_ASSUNTO_CADASTRO_COM_SUCESSO'), textoEmail('EMAIL_TITULO_CADASTRO_COM_SUCESSO', array($strNome)), textoEmail('EMAIL_CADASTRO_COM_SUCESSO_ALUNO', array($strEmail, $strSenha)));
						else
							email($strEmail, textoEmail('EMAIL_ASSUNTO_CADASTRO_COM_SUCESSO'), textoEmail('EMAIL_TITULO_CADASTRO_COM_SUCESSO', array($strNome)), textoEmail('EMAIL_CADASTRO_COM_SUCESSO_PROFESSOR', array($strEmail, $strSenha)));
						return true;
					}
					else {
						$strQuery 	=	"DELETE FROM usuarios WHERE idUsuario = " . $idUsuario . ";";
						if (!BancoDados::query($strQuery)) {
							email(constant('EMAIL_ADM_FROM'), texto('ERRO'), texto('ERRO'), textoEmail('EMAIL_ERRO_CADASTRO', array($strNome, $strEmail, $idUsuario)));
						}
						adicionaMensagem(texto('MENSAGEM_ERRO_CADASTRO'), 'erro');
						return false;
					}
				}
			}
			else {
				adicionaMensagem(texto('MENSAGEM_ERRO_CADASTRO'), 'erro');
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	/**
	 * Funcao para salvar a aceitacao do termo pelo usuario. Serve para os casos de mudanca de perfil pelo administrador ou quando um aluno e cadastrado pelo professor em um curso
	 * @return 
	 * @param object $strConcordarTermo
	 */
	public function aceitarTermo($strConcordarTermo) {
		$strConcordarTermo	=	$strConcordarTermo == 'sim' ? 1 : 0;
		
		if ($strConcordarTermo) {
			$strQuery 	=	"UPDATE usuarios SET termoCompromissoAssinado = 1 WHERE idUsuario = " . $this->getIdUsuario() . ";";
			
			return BancoDados::query($strQuery);
		}
		else {
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TERMO_DE_COMPROMISSO'), 'erro');
			return false;
		}
	}
	
	/**
	 * 
	 * @param object $strEmail
	 * @return 
	 */
	public static function lembrarSenha($strEmail) {
		if (validaEmail($strEmail)) {
			if (Usuario::verificaEmailExistente($strEmail)) {
				
				//GERA SENHA ALEATORIA
				$caracteres	=	'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%&*?';
				
				$tamanho 	=	10;
				$novaSenha	=	'';
				
				for ($i = 0; $i < $tamanho; $i++) {
					$novaSenha = $novaSenha . substr($caracteres, rand(0, strlen($caracteres) - 1), 1);
				}
				
				$strQuery 	=	'UPDATE usuarios SET senha = MD5("' . $novaSenha . '") WHERE email = "' . $strEmail . '";';
				
				if (BancoDados::query($strQuery)) {
					email($strEmail, textoEmail('EMAIL_ASSUNTO_SENHA_ALTERADA'), textoEmail('EMAIL_TITULO_SENHA_ALTERADA'), textoEmail('EMAIL_SENHA_ALTERADA', array($strEmail, $novaSenha)));
					adicionaMensagem(texto('MENSAGEM_SENHA_ALTERADA_COM_SUCESSO', array($strEmail)));
					return true; 
				}
				else {
					return false;
				}
			}
			else {
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_EMAIL_INEXISTENTE'), 'erro');
				return false;
			}
		}
		else {
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_EMAIL'))), 'erro');
			return false;
		}
	}
	
	/**
	 * 
	 * @param object $strEmail
	 * @return 
	 */
	public static function verificaEmailExistente($strEmail) {
		$strQuery 	=	'SELECT idUsuario FROM usuarios WHERE email = "' . $strEmail . '";';
		$resultado = BancoDados::query($strQuery);
		if (is_array($resultado) && sizeof($resultado) > 0) {
			return $resultado[0]['idUsuario'];
		}
		else {
			return false;
		}
	}
	
	/**
	 * 
	 * @param object $strNome
	 * @param object $strEmail
	 * @param object $strAssunto
	 * @param object $strPergunta
	 * @return 
	 */
	public static function enviaFaleConosco($strNome, $strEmail, $strAssunto, $strPergunta) {
		if (Usuario::validaFaleConosco($strNome, $strEmail, $strAssunto, $strPergunta)) {
			$strQuery	=	"INSERT INTO faleConoscoMensagens VALUES (default, NULL, '" . $strNome . "', '" . $strEmail . "', NOW(), '" . $strPergunta . "', '" . $strAssunto . "', NULL, NULL);";
			
			if (!BancoDados::query($strQuery))
				return false;
			
			email(constant('EMAIL_ADM_FROM'), textoEmail('EMAIL_ADM_ASSUNTO_NOVA_DUVIDA_FALE_CONOSCO'), textoEmail('EMAIL_ADM_TITULO_NOVA_DUVIDA_FALE_CONOSCO'), textoEmail('EMAIL_ADM_NOVA_DUVIDA_FALE_CONOSCO', array($strNome, $strNome, $strEmail, $strAssunto, $strPergunta)));
			email($strEmail, textoEmail('EMAIL_ASSUNTO_NOVA_DUVIDA_FALE_CONOSCO'), textoEmail('EMAIL_TITULO_NOVA_DUVIDA_FALE_CONOSCO', array($strNome)), textoEmail('EMAIL_NOVA_DUVIDA_FALE_CONOSCO'));
			adicionaMensagem(texto('MENSAGEM_FALE_CONOSCO_DUVIDA_ENVIADA_COM_SUCESSO'));
			return true;
		}
		else {
			return false;
		}
	}
	
	public static function validaFaleConosco($strNome, $strEmail, $strAssunto, $strPergunta) {
		$validou	=	true;
		
		/*
		 * Validacao do nome inserido pelo usuario.
		 */
		
		if (!validaAlfabetico($strNome, constant('__TAM_NOME_USUARIO__'))){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_NOME'))), 'erro');	
		}
		
		if (!validaEmail($strEmail)){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_EMAIL'))), 'erro');		
		}
		
		if (!validaAlfaNumerico($strAssunto, constant('__TAM_ASSUNTO_FALE_CONOSCO__'))) {
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_ASSUNTO_FALE_CONOSCO'))), 'erro');
		}
		
		if (!validaAlfaNumerico($strPergunta)) {
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_PERGUNTA_FALE_CONOSCO'))), 'erro');
		}
		
		return $validou;
	}
	
	/**
	 * 
	 * @param object $idUsuario
	 * @param object $strNome
	 * @param object $fileFoto
	 * @param object $strFotoAntiga
	 * @param object $removerFoto
	 * @param object $strDataNascimento
	 * @param object $strSexo
	 * @param object $strCidade
	 * @param object $strEstado
	 * @param object $strFinalidadeUso
	 * @param object $strFinalidadeUsoAntiga
	 * @param object $strInstituicao
	 * @param object $strNivel
	 * @param object $strCurso
	 * @param object $strPeriodo
	 * @param object $strInstituicao
	 * @param object $strInstituto
	 * @param object $strDepartamento
	 * @param object $strTitulacao
	 * @param object $strEnderecoInstitucional
	 * @param object $strTelefoneInstitucional
	 * @param object $strCursosPretendidos
	 * @param object $strEmail
	 * @param object $strConfirmarEmail
	 * @param object $strSenha
	 * @param object $strConfirmarSenha
	 * @param object $strConcordarTermo
	 * @param object $validarTermoCompromisso
	 * @return 
	 */
	public function editar($idUsuario, $strNome, $fileFoto, $strFotoAntiga, $removerFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strFinalidadeUsoAntiga, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo, $validarTermoCompromisso) {
		
		$trocouEmail	=	false;
		if ($this->getEmail() != $strEmail) {
			$trocouEmail 	=	true;
		}
		
		if (Usuario::validar($strNome, $fileFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo, $validarTermoCompromisso, $trocouEmail)) {
			$strSenha			=	$strSenha == '' ? '' : 'senha = MD5("' . $strSenha . '"),'; 
			$strRemoverFoto		=	$removerFoto ? "foto = NULL," : "";
			$strDataNascimento	=	$strDataNascimento == '' ? 'NULL' : "'" . $strDataNascimento . "'";
			$strConcordarTermo 	=	$validarTermoCompromisso ? $strConcordarTermo : 'nao';
			$strConcordarTermo	=	$strConcordarTermo == 'sim' ? 1 : 0;
			
			$strQuery 	=	"UPDATE usuarios SET email='" . $strEmail . "', " . $strSenha . " tipoCadastro = '" . $strFinalidadeUso . "', nome = '" . $strNome . "', " . $strRemoverFoto . " dataNascimento = " . $strDataNascimento . ", sexo = '" . $strSexo . "', cidade = '" . $strCidade . "', estado = '" . $strEstado . "', instituicao = '" . $strInstituicao . "', termoCompromissoAssinado = '" . $strConcordarTermo . "' WHERE idUsuario = " . $idUsuario . ";";
			if (BancoDados::query($strQuery)) {
				
				if ($strFinalidadeUsoAntiga == 'Aluno') {
					$strQuery 	=	"DELETE FROM dadosAlunos WHERE idUsuario = " . $idUsuario . ";";
				}
				else {
					$strQuery 	=	"DELETE FROM dadosProfessores WHERE idUsuario = " . $idUsuario . ";";
				}
					
				if (BancoDados::query($strQuery)) {
					
					if ($strFinalidadeUso == 'Aluno') {
						$strQuery 	=	"INSERT INTO dadosAlunos VALUES(" . $idUsuario . ", '" . $strNivel . "', '" . $strCurso . "', '" . $strPeriodo . "');";
					}
					else {
						
						$strEnderecoInstitucional	=	$strEnderecoInstitucional == '' ? 'NULL' : "'" . $strEnderecoInstitucional . "'";
						$strTelefoneInstitucional	=	$strTelefoneInstitucional == '' ? 'NULL' : "'" . $strTelefoneInstitucional . "'";
						
						if ($strFinalidadeUsoAntiga == 'Professor' && $this->getProfessorAutorizado()) {
							$strQuery 	=	"INSERT INTO dadosProfessores VALUES(" . $idUsuario . ", 1, '" . $strInstituto . "', '" . $strDepartamento . "', '" . $strTitulacao . "', " . $strEnderecoInstitucional . ", " . $strTelefoneInstitucional . ", '" . $strCursosPretendidos . "', default);";
						}
						else {
							$strQuery 	=	"INSERT INTO dadosProfessores VALUES(" . $idUsuario . ", default, '" . $strInstituto . "', '" . $strDepartamento . "', '" . $strTitulacao . "', " . $strEnderecoInstitucional . ", " . $strTelefoneInstitucional . ", '" . $strCursosPretendidos . "', default);";
						}
					}
					
					if (BancoDados::query($strQuery)) {
						
						if ($removerFoto) {
							unlink(constant('__CAMINHO_FOTO_USUARIO__') . $this->getFoto('original'));
							unlink(constant('__CAMINHO_FOTO_USUARIO__') . $this->getFoto('medio'));
							unlink(constant('__CAMINHO_FOTO_USUARIO__') . $this->getFoto('pequeno'));
						}
						
						if (is_array($fileFoto)) {
							if ($fileFoto['name'] != '') {
								$arquivoFoto		=	'usuario' . $idUsuario . '_original.' . array_pop(explode('.', $fileFoto['name']));
								$arquivoFotoGrande	=	'usuario' . $idUsuario . '_medio.' . array_pop(explode('.', $fileFoto['name']));
								$arquivoFotoPequena	=	'usuario' . $idUsuario . '_pequeno.' . array_pop(explode('.', $fileFoto['name']));
								if (move_uploaded_file($fileFoto['tmp_name'], constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto)) {
									redimensionaImagem(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto, constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoGrande, constant('__LARGURA_GRANDE_FOTO_USUARIO__'), constant('__ALTURA_GRANDE_FOTO_USUARIO__'), 100);
									redimensionaImagem(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto, constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoPequena, constant('__LARGURA_PEQUENA_FOTO_USUARIO__'), constant('__ALTURA_PEQUENA_FOTO_USUARIO__'), 100);
									$strQuery 	=	"UPDATE usuarios SET foto = '" . $arquivoFoto . "' WHERE idUsuario = " . $idUsuario . ";";
									
									if (!BancoDados::query($strQuery)) {
										unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFoto);
										unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoGrande);
										unlink(constant('__CAMINHO_FOTO_USUARIO__') . $arquivoFotoPequena);
										
										adicionaMensagem(texto('MENSAGEM_CADASTRO_SALVAR_FOTO_USUARIO'));
									}
								}
								else {
									adicionaMensagem(texto('MENSAGEM_CADASTRO_SALVAR_FOTO_USUARIO'));
								}
							}
						}
						
						adicionaMensagem(texto('MENSAGEM_MODIFICACOES_SALVAS'));
						return true;
					}
					else {
						adicionaMensagem(texto('MENSAGEM_ERRO_MODIFICACOES_PERDIDAS'), 'erro');
						return false;
					}
				}
				else {
					adicionaMensagem(texto('MENSAGEM_ERRO_MODIFICACOES_PERDIDAS'), 'erro');
					return false;
				}
			}
			else {
				adicionaMensagem(texto('MENSAGEM_ERRO_EDITAR'), 'erro');
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	/**
	 * Verifica se os dados inseridos pelo usuario no formulario de cadastro sao validos.
	 * @return bool
	 * @param string $strNome
	 * @param string $strFoto
	 * @param file	 $arquivoFoto
	 * @param int    $intDataNascimentoDia
	 * @param int    $intDataNascimentoMes
	 * @param int    $intDataNascimentoAno
	 * @param string $strSexo
	 * @param string $strEndereco
	 * @param string $strCidade
	 * @param string $strEstado
	 * @param int    $intTelefone
	 * @param string $strCurso
	 * @param string $strInstituicao
	 * @param string $strEmail
	 * @param string $strConfirmaEmail
	 * @param string $strSenha
	 * @param string $strConfirmaSenha
	 * @param bool   $cadastroProfessor
	 * @param string $strTitulacao
	 * @param string $strInstituto
	 * @param string $strDepartamento
	 * @param string $strDisplinasMinistradas
	 * @param string $strCursosPretendidos
	 */
	public static function validar($strNome, $fileFoto, $strDataNascimento, $strSexo, $strCidade, $strEstado, $strFinalidadeUso, $strInstituicao, $strNivel, $strCurso, $strPeriodo, $strInstituicao, $strInstituto, $strDepartamento, $strTitulacao, $strEnderecoInstitucional, $strTelefoneInstitucional, $strCursosPretendidos, $strEmail, $strConfirmarEmail, $strSenha , $strConfirmarSenha, $strConcordarTermo, $validarTermoCompromisso = true, $novoUsuario = true){
		$validou	=	true;
		/*
		 * Validacao do nome inserido pelo usuario.
		 */
		
		if (!validaAlfabetico($strNome, constant('__TAM_NOME_USUARIO__'))){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_NOME'))), 'erro');	
		}
		
		/*
		 * Validacao da data de nascimento inserida pelo usuario.
		 */
		
		if (!validaDataString($strDataNascimento) && str_replace('-', '', $strDataNascimento) !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DATA_DE_NASCIMENTO'))), 'erro');	
		}
		
		/*
		 * Validacao do Sexo inserido pelo usuario.
		 */
		
		if($strSexo	==	''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_SEXO'))), 'erro');
		}
		
		/*
		 * Validacao da Cidade inserida pelo usuario.
		 */
		
		if (!validaAlfabetico($strCidade, constant('__TAM_CIDADE_USUARIO__'))){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_CIDADE'))), 'erro');	
		}
		
		/*
		 * Validacao do Estado inserido pelo usuario.
		 */
		
		if ($strEstado == '--' ){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_ESTADO'))), 'erro');
		}
		
		if ($strFinalidadeUso != 'Aluno' && $strFinalidadeUso != 'Professor' && $strFinalidadeUso != 'Administrador') {
			$validou 	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('TITULO_FINALIDADE_DE_USO'))), 'erro');
		}
		else {
			if ($strFinalidadeUso == 'Aluno') {
				/*
				 * Validacao da Instituicao inserida pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strInstituicao, constant('__TAM_INSTITUICAO_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_INSTITUICAO'))), 'erro');
				}
				
				/*
				 * Validacao do Nivel do Curso inserido pelo usuario.
				 */
				if ($strNivel == '--' || $strNivel == '') {
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_NIVEL'))), 'erro');
				}
				
				/*
				 * Validacao do Curso inserido pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strCurso, constant('__TAM_CURSO_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_CURSO'))), 'erro');	
				}
				
				/*
				 * Validacao do Periodo inserido pelo usuario.
				 */
				
				if ($strPeriodo == '--' || $strPeriodo == ''){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_PERIODO'))), 'erro');	
				}
			}
			
			if ($strFinalidadeUso == 'Professor') {
				/*
				 * Validacao da Instituicao inserida pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strInstituicao, constant('__TAM_INSTITUICAO_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_INSTITUICAO'))), 'erro');
				}
				
				/*
				 * Validacao do Instituto inserida pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strInstituto, constant('__TAM_INSTITUTO_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_INSTITUTO'))), 'erro');
				}
				
				/*
				 * Validacao do Departamento inserido pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strDepartamento, constant('__TAM_DEPARTAMENTO_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_DEPARTAMENTO'))), 'erro');	
				}
				
				/*
				 * Validacao da Titulacao inserida pelo usuario.
				 */
				
				if ($strTitulacao == '--' || $strTitulacao == ''){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_SELECT', array(texto('DADOS_TITULACAO'))), 'erro');	
				}
				
				/*
				 * Validacao do Endereco Institucional inserido pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strEnderecoInstitucional, constant('__TAM_ENDERECO_INSTITUCIONAL_USUARIO__')) && $strEnderecoInstitucional	!=	''){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_ENDERECO_INSTITUCIONAL'))), 'erro');
				}
				
				/*
				 * Validacao do Telefone Institucional inserido pelo usuario.
				 */
				
				if (!validaNumero($strTelefoneInstitucional, constant('__TAM_TELEFONE_INSTITUCIONAL_USUARIO__')) && $strTelefoneInstitucional	!=	''){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_TELEFONE_INSTITUCIONAL'))), 'erro');	
				}
				
				/*
				 * Validacao das Disciplinas Pretendidas inseridas pelo usuario.
				 */
				
				if (!validaAlfaNumerico($strCursosPretendidos, constant('__TAM_CURSOS_PRETENDIDOS_USUARIO__'))){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_CURSOS_PRETENDIDOS'))), 'erro');		
				}
			}
		}
		
		/*
		 * Validacao do Email inserido pelo usuario.
		 */
		
		if (!validaEmail($strEmail)){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_EMAIL'))), 'erro');		
		}
		else{
			if ($novoUsuario) {
				if (Usuario::verificaEmailExistente($strEmail)) {
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_EMAIL_EXISTENTE'), 'erro');	
				}
			}
		}
		
		/*
		 * Validacao do ConfirmarEmail inserido pelo usuario.
		 */
		
		if ($strEmail	!=	$strConfirmarEmail){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CONFIRMAR_EMAIL'), 'erro');	
		}
		
		/*
		 * Validacao da Senha inserida pelo usuario.
		 */
		if (!validaSenha($strSenha)){
			if (!$novoUsuario) {
				if ($strSenha != '') {
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_SENHA'))), 'erro');	
				}
			}
			else {
				$validou	=	false;
				adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CAMPO_INPUT', array(texto('DADOS_SENHA'))), 'erro');	
			}
		}
		
		/*
		 * Validacao do ConfirmarSenha inserido pelo usuario.
		 */
		
		if ($strSenha	!=	$strConfirmarSenha){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_CONFIRMAR_SENHA'), 'erro');		
		}
		
		if ($validarTermoCompromisso && $strConcordarTermo != 'sim' && ($strFinalidadeUso == 'Aluno' || $strFinalidadeUso == 'Professor' || $strFinalidadeUso == 'Administrador')) {
			$validou 	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TERMO_DE_COMPROMISSO'), 'erro');
		}
		
		/*
		 * Validacao da foto inserida pelo usuario.
		 */
		
		if (!validaFoto($fileFoto['name']) && $fileFoto['name'] !=''){
			$validou	=	false;
			adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TIPO_FOTO'), 'erro');
		}
		else{
			if ($fileFoto['name'] != ''){
				if ($fileFoto['size']/1024	>	constant('__TAM_FOTO_USUARIO__')){
					$validou	=	false;
					adicionaMensagem(texto('MENSAGEM_ERRO_VALIDACAO_TAMANHO_FOTO', 'erro'));	
				}
				else{
					/*
					 * Verifica se a foto validou, mas houve algum outro erro de validacao.
					 * Seta uma mensagem pedindo ao usuario que reenvie a foto, pois a mesma nao e salva se houver um erro.
					 */
					if(!$validou){
						adicionaMensagem(texto('MENSAGEM_VALIDACAO_REENVIAR_FOTO'));	
					}
				}
			}
		}
		
		return $validou;
	}
	
	public function verificaInscricao($idCursoConsulta, $tipoParticipacao = null, $autorizado = null) {
		if (is_numeric($idCursoConsulta)) {
			$inscrito		=	false;
			$arrayCursos	=	$this->getCursos();
			
			foreach ($arrayCursos as $idCurso => $dadosInscricao) {
				if ($idCurso == $idCursoConsulta) {
					if ($tipoParticipacao == null && $autorizado == null) {
						$inscrito = true;
						break;
					}
					else {
						if ($tipoParticipacao != null && $autorizado != null) {
							if ($tipoParticipacao == $dadosInscricao['participacao'] && $autorizado == $dadosInscricao['autorizado']) {
								$inscrito = true;
							}
						}
						else {
							if ($tipoParticipacao != null) {
								if ($tipoParticipacao == $dadosInscricao['participacao']) {
									$inscrito = true;
								}
							}
							else {
								if ($autorizado == $dadosInscricao['autorizado']) {
									$inscrito = true;
								}
							}
						}
						break;
					}
				}
			}
			
			return $inscrito;
		}
		else {
			return false;
		}
	}
	
	public function getPerguntaInscricaoResposta($idCurso, $idPergunta) {
		if (is_numeric($idCurso) && is_numeric($idPergunta)) {
			$strQuery	=	"SELECT * FROM perguntasInscricaoRespostas WHERE idUsuario = " . $this->getIdUsuario() . " AND idCurso = " . $idCurso . " AND idPergunta = " . $idPergunta;
			if (is_array($resultado = BancoDados::query($strQuery))) {
				return $resultado;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
    /**
     * Returns $alunoCurso.
     * @see Usuario::$alunoCurso
     */
    public function getAlunoCurso()
    {
        return $this->alunoCurso;
    }
    
    /**
     * Sets $alunoCurso.
     * @param object $alunoCurso
     * @see Usuario::$alunoCurso
     */
    public function setAlunoCurso($alunoCurso)
    {
        $this->alunoCurso = $alunoCurso;
    }
    
    /**
     * Returns $alunoNivel.
     * @see Usuario::$alunoNivel
     */
    public function getAlunoNivel()
    {
        return $this->alunoNivel;
    }
    
    /**
     * Sets $alunoNivel.
     * @param object $alunoNivel
     * @see Usuario::$alunoNivel
     */
    public function setAlunoNivel($alunoNivel)
    {
        $this->alunoNivel = $alunoNivel;
    }
    
    /**
     * Returns $alunoPeriodo.
     * @see Usuario::$alunoPeriodo
     */
    public function getAlunoPeriodo()
    {
        return $this->alunoPeriodo;
    }
    
    /**
     * Sets $alunoPeriodo.
     * @param object $alunoPeriodo
     * @see Usuario::$alunoPeriodo
     */
    public function setAlunoPeriodo($alunoPeriodo)
    {
        $this->alunoPeriodo = $alunoPeriodo;
    }
    
    /**
     * Returns $cidade.
     * @see Usuario::$cidade
     */
    public function getCidade()
    {
        return $this->cidade;
    }
    
    /**
     * Sets $cidade.
     * @param object $cidade
     * @see Usuario::$cidade
     */
    public function setCidade($cidade)
    {
        $this->cidade = $cidade;
    }
    
    /**
     * Returns $dataCadastro.
     * @see Usuario::$dataCadastro
     */
    public function getDataCadastro()
    {
        return $this->dataCadastro;
    }
    
    /**
     * Sets $dataCadastro.
     * @param object $dataCadastro
     * @see Usuario::$dataCadastro
     */
    public function setDataCadastro($dataCadastro)
    {
        $this->dataCadastro = $dataCadastro;
    }
    
    /**
     * Returns $dataNascimento.
     * @see Usuario::$dataNascimento
     */
    public function getDataNascimento()
    {
        return $this->dataNascimento;
    }
    
    /**
     * Sets $dataNascimento.
     * @param object $dataNascimento
     * @see Usuario::$dataNascimento
     */
    public function setDataNascimento($dataNascimento)
    {
        $this->dataNascimento = $dataNascimento;
    }
    
    /**
     * Returns $email.
     * @see Usuario::$email
     */
    public function getEmail()
    {
        return $this->email;
    }
    
    /**
     * Sets $email.
     * @param object $email
     * @see Usuario::$email
     */
    public function setEmail($email)
    {
        $this->email = $email;
    }
    
    /**
     * Returns $estado.
     * @see Usuario::$estado
     */
    public function getEstado()
    {
        return $this->estado;
    }
    
    /**
     * Sets $estado.
     * @param object $estado
     * @see Usuario::$estado
     */
    public function setEstado($estado)
    {
        $this->estado = $estado;
    }
    
    /**
     * Returns $forumPreferenciaVisualizacao.
     * @see Usuario::$forumPreferenciaVisualizacao
     */
    public function getForumPreferenciaVisualizacao()
    {
        return $this->forumPreferenciaVisualizacao;
    }
    
    /**
     * Sets $forumPreferenciaVisualizacao.
     * @param object $forumPreferenciaVisualizacao
     * @see Usuario::$forumPreferenciaVisualizacao
     */
    public function setForumPreferenciaVisualizacao($forumPreferenciaVisualizacao)
    {
        $this->forumPreferenciaVisualizacao = $forumPreferenciaVisualizacao;
    }
    
    /**
     * Returns $foto.
     * @see Usuario::$foto
     */
    public function getFoto($tamanho = 'medio')
    {
    	if ($tamanho == 'medio' || $tamanho == 'original' || $tamanho == 'pequeno')
        	return str_replace('original', $tamanho, $this->foto);
        else
        	return false;
    }
	
	/**
     * Returns $foto.
     * @see Usuario::$foto
     */
    public function getURLFoto($tamanho = 'medio')
    {
        return $this->getFoto($tamanho) != '' ? constant('__URL_FOTO_USUARIO__') . $this->getFoto($tamanho) : constant('__URL_FOTO_USUARIO__') . 'usuariodefault_' . $tamanho . '.png';
    }
	
	/**
     * Returns $foto.
     * @see Usuario::$foto
     */
    public function getDimensoesFoto($tamanho = 'medio')
    {	
		$nomeFoto	=	$this->getFoto($tamanho) != '' ? $this->getFoto($tamanho) : 'usuariodefault_' . $tamanho . '.png';
        return getimagesize(constant('__CAMINHO_FOTO_USUARIO__') . $nomeFoto);
    }
	
	/**
     * Returns $foto.
     * @see Usuario::$foto
     */
    public function getDimensoesCompletasFoto($tamanho = 'medio')
    {	
		$dimensoes 	=	$this->getDimensoesFoto($tamanho);
		$largura	=	$dimensoes[0];
		$altura		=	$dimensoes[1];
		
		return ('width="' . $largura . '" height="' . $altura . '"');
	}
    
    /**
     * Sets $foto.
     * @param object $foto
     * @see Usuario::$foto
     */
    public function setFoto($foto)
    {
        $this->foto = $foto;
    }
    
    /**
     * Returns $idUsuario.
     * @see Usuario::$idUsuario
     */
    public function getIdUsuario()
    {
        return $this->idUsuario;
    }
    
    /**
     * Sets $idUsuario.
     * @param object $idUsuario
     * @see Usuario::$idUsuario
     */
    public function setIdUsuario($idUsuario)
    {
        $this->idUsuario = $idUsuario;
    }
    
    /**
     * Returns $instituicao.
     * @see Usuario::$instituicao
     */
    public function getInstituicao()
    {
        return $this->instituicao;
    }
    
    /**
     * Sets $instituicao.
     * @param object $instituicao
     * @see Usuario::$instituicao
     */
    public function setInstituicao($instituicao)
    {
        $this->instituicao = $instituicao;
    }
    
    /**
     * Returns $nome.
     * @see Usuario::$nome
     */
    public function getNome()
    {
        return $this->nome;
    }
    
    /**
     * Sets $nome.
     * @param object $nome
     * @see Usuario::$nome
     */
    public function setNome($nome)
    {
        $this->nome = $nome;
    }
    
    /**
     * Returns $professorAutorizado.
     * @see Usuario::$professorAutorizado
     */
    public function getProfessorAutorizado()
    {
        return $this->professorAutorizado;
    }
    
    /**
     * Sets $professorAutorizado.
     * @param object $professorAutorizado
     * @see Usuario::$professorAutorizado
     */
    public function setProfessorAutorizado($professorAutorizado)
    {
        $this->professorAutorizado = $professorAutorizado;
    }
    
    /**
     * Returns $professorCapacidadeBancoRecursos.
     * @see Usuario::$professorCapacidadeBancoRecursos
     */
    public function getProfessorCapacidadeBancoRecursos()
    {
        return $this->professorCapacidadeBancoRecursos;
    }
    
    /**
     * Sets $professorCapacidadeBancoRecursos.
     * @param object $professorCapacidadeBancoRecursos
     * @see Usuario::$professorCapacidadeBancoRecursos
     */
    public function setProfessorCapacidadeBancoRecursos($professorCapacidadeBancoRecursos)
    {
        $this->professorCapacidadeBancoRecursos = $professorCapacidadeBancoRecursos;
    }
    
    /**
     * Returns $professorCursosPretendidos.
     * @see Usuario::$professorCursosPretendidos
     */
    public function getProfessorCursosPretendidos()
    {
        return $this->professorCursosPretendidos;
    }
    
    /**
     * Sets $professorCursosPretendidos.
     * @param object $professorCursosPretendidos
     * @see Usuario::$professorCursosPretendidos
     */
    public function setProfessorCursosPretendidos($professorCursosPretendidos)
    {
        $this->professorCursosPretendidos = $professorCursosPretendidos;
    }
    
    /**
     * Returns $professorDepartamento.
     * @see Usuario::$professorDepartamento
     */
    public function getProfessorDepartamento()
    {
        return $this->professorDepartamento;
    }
    
    /**
     * Sets $professorDepartamento.
     * @param object $professorDepartamento
     * @see Usuario::$professorDepartamento
     */
    public function setProfessorDepartamento($professorDepartamento)
    {
        $this->professorDepartamento = $professorDepartamento;
    }
    
    /**
     * Returns $professorEnderecoInstitucional.
     * @see Usuario::$professorEnderecoInstitucional
     */
    public function getProfessorEnderecoInstitucional()
    {
        return $this->professorEnderecoInstitucional;
    }
    
    /**
     * Sets $professorEnderecoInstitucional.
     * @param object $professorEnderecoInstitucional
     * @see Usuario::$professorEnderecoInstitucional
     */
    public function setProfessorEnderecoInstitucional($professorEnderecoInstitucional)
    {
        $this->professorEnderecoInstitucional = $professorEnderecoInstitucional;
    }
    
    /**
     * Returns $professorInstituto.
     * @see Usuario::$professorInstituto
     */
    public function getProfessorInstituto()
    {
        return $this->professorInstituto;
    }
    
    /**
     * Sets $professorInstituto.
     * @param object $professorInstituto
     * @see Usuario::$professorInstituto
     */
    public function setProfessorInstituto($professorInstituto)
    {
        $this->professorInstituto = $professorInstituto;
    }
    
    /**
     * Returns $professorTelefoneInstitucional.
     * @see Usuario::$professorTelefoneInstitucional
     */
    public function getProfessorTelefoneInstitucional()
    {
        return $this->professorTelefoneInstitucional;
    }
	
	/**
     * Returns $professorTelefoneInstitucional.
     * @see Usuario::$professorTelefoneInstitucional
     */
    public function getProfessorTelefoneInstitucionalFormatado()
    {
        return $this->getProfessorTelefoneInstitucional() != '' ? '(' . substr($this->getProfessorTelefoneInstitucional(), 0, 2) . ') ' . substr($this->getProfessorTelefoneInstitucional(), 2, 4) . '-' . substr($this->getProfessorTelefoneInstitucional(), 6, 4) : texto('DADOS_CAMPO_EM_BRANCO');
    }
    
    /**
     * Sets $professorTelefoneInstitucional.
     * @param object $professorTelefoneInstitucional
     * @see Usuario::$professorTelefoneInstitucional
     */
    public function setProfessorTelefoneInstitucional($professorTelefoneInstitucional)
    {
        $this->professorTelefoneInstitucional = $professorTelefoneInstitucional;
    }
    
    /**
     * Returns $professorTitulacao.
     * @see Usuario::$professorTitulacao
     */
    public function getProfessorTitulacao()
    {
        return $this->professorTitulacao;
    }
    
    /**
     * Sets $professorTitulacao.
     * @param object $professorTitulacao
     * @see Usuario::$professorTitulacao
     */
    public function setProfessorTitulacao($professorTitulacao)
    {
        $this->professorTitulacao = $professorTitulacao;
    }
    
    /**
     * Returns $sexo.
     * @see Usuario::$sexo
     */
    public function getSexo()
    {
        return $this->sexo;
    }
    

    public function getSexoString()
    {
        return $this->getSexo() == "F" ? "Feminino" : "Masculino";
    }
	
    /**
     * Sets $sexo.
     * @param object $sexo
     * @see Usuario::$sexo
     */
    public function setSexo($sexo)
    {
        $this->sexo = $sexo;
    }
    
    /**
     * Returns $termoCompromisso.
     * @see Usuario::$termoCompromisso
     */
    public function getTermoCompromisso()
    {
        return $this->termoCompromisso;
    }
    
    /**
     * Sets $termoCompromisso.
     * @param object $termoCompromisso
     * @see Usuario::$termoCompromisso
     */
    public function setTermoCompromisso($termoCompromisso)
    {
        $this->termoCompromisso = $termoCompromisso;
    }
    
    /**
     * Returns $tipoCadastro.
     * @see Usuario::$tipoCadastro
     */
    public function getTipoCadastro($exibir = false)
    {
    	if ($exibir) {
    		$tipoCadastro	=	'';
    		switch($this->tipoCadastro) {
    			case 'Aluno':
					$tipoCadastro	=	texto('DADOS_FINALIDADE_DE_USO_ALUNO');
					break;
				case 'Professor':
					$tipoCadastro	=	texto('DADOS_FINALIDADE_DE_USO_PROFESSOR');
					break;
				case 'Administrador':
					$tipoCadastro	=	texto('DADOS_FINALIDADE_DE_USO_ADMINISTRADOR');
					break;
    		}
			return $tipoCadastro;
    	}
		else {
			return $this->tipoCadastro;
		}
    }
    
    /**
     * Sets $tipoCadastro.
     * @param object $tipoCadastro
     * @see Usuario::$tipoCadastro
     */
    public function setTipoCadastro($tipoCadastro)
    {
        $this->tipoCadastro = $tipoCadastro;
    }
    
    /**
     * Returns $ultimoAcesso.
     * @see Usuario::$ultimoAcesso
     */
    public function getUltimoAcesso()
    {
        return $this->ultimoAcesso;
    }
    
    /**
     * Sets $ultimoAcesso.
     * @param object $ultimoAcesso
     * @see Usuario::$ultimoAcesso
     */
    public function setUltimoAcesso($ultimoAcesso)
    {
        $this->ultimoAcesso = $ultimoAcesso;
    }
	
	/**
     * Returns $apagado.
     * @see Usuario::$apagado
     */
    public function getApagado()
    {
        return $this->apagado;
    }
    
    /**
     * Sets $ultimoAcesso.
     * @param object $ultimoAcesso
     * @see Usuario::$ultimoAcesso
     */
    public function setApagado($apagado)
    {
        $this->apagado = $apagado;
    }
	
	public function autorizaAluno($idCurso)
    {
        $strQuery = "UPDATE cursosAlunos SET autorizado = 1 WHERE idUsuario = $this->idUsuario AND idCurso = $idCurso ";
		if($resultado = BancoDados::query($strQuery)){
			return true;
		}else
			return false;
    }
	public function getTipos()
    {
        $strQuery = "SELECT strTipo FROM usuariosTipo;";
		$resultado = BancoDados::query($strQuery);		
		return $resultado;
    }

}
?>